// noinspection JSUnresolvedReference /** * Field Google Map */ /* global jQuery, document, redux_change, redux, google */ (function ( $ ) { 'use strict'; redux.field_objects = redux.field_objects || {}; redux.field_objects.google_maps = redux.field_objects.google_maps || {}; /* LIBRARY INIT */ redux.field_objects.google_maps.init = function ( selector ) { if ( ! selector ) { selector = $( document ).find( '.redux-group-tab:visible' ).find( '.redux-container-google_maps:visible' ); } $( selector ).each( function ( i ) { let delayRender; const el = $( this ); let parent = el; if ( ! el.hasClass( 'redux-field-container' ) ) { parent = el.parents( '.redux-field-container:first' ); } if ( parent.is( ':hidden' ) ) { return; } if ( parent.hasClass( 'redux-field-init' ) ) { parent.removeClass( 'redux-field-init' ); } else { return; } // Check for delay render, which is useful for calling a map // render after JavaScript load. delayRender = Boolean( el.find( '.redux_framework_google_maps' ).data( 'delay-render' ) ); // API Key button. redux.field_objects.google_maps.clickHandler( el ); // Init our maps. redux.field_objects.google_maps.initMap( el, i, delayRender ); } ); }; /* INIT MAP FUNCTION */ redux.field_objects.google_maps.initMap = async function ( el, idx, delayRender ) { let delayed; let scrollWheel; let streetView; let mapType; let address; let defLat; let defLong; let defaultZoom; let mapOptions; let geocoder; let g_autoComplete; let g_LatLng; let g_map; let noLatLng = false; // Pull the map class. const mapClass = el.find( '.redux_framework_google_maps' ); const containerID = mapClass.attr( 'id' ); const autocomplete = containerID + '_autocomplete'; const canvas = containerID + '_map_canvas'; const canvasId = $( '#' + canvas ); const latitude = containerID + '_latitude'; const longitude = containerID + '_longitude'; // Add map index to data attr. // Why, say we want to use delay_render, // and want to init the map later on. // You'd need the index number in the // event of multiple map instances. // This allows one to retrieve it // later. $( mapClass ).attr( 'data-idx', idx ); if ( true === delayRender ) { return; } // Map has been rendered, no need to process again. if ( $( '#' + containerID ).hasClass( 'rendered' ) ) { return; } // If a map is set to delay render and has been initiated // from another scrip, add the 'render' class so rendering // does not occur. // It messes things up. delayed = Boolean( mapClass.data( 'delay-render' ) ); if ( true === delayed ) { mapClass.addClass( 'rendered' ); } // Create the autocomplete object, restricting the search // to geographical location types. g_autoComplete = await google.maps.importLibrary( 'places' ); g_autoComplete = new google.maps.places.Autocomplete( document.getElementById( autocomplete ), {types: ['geocode']} ); // Data bindings. scrollWheel = Boolean( mapClass.data( 'scroll-wheel' ) ); streetView = Boolean( mapClass.data( 'street-view' ) ); mapType = Boolean( mapClass.data( 'map-type' ) ); address = mapClass.data( 'address' ); address = decodeURIComponent( address ); address = address.trim(); // Set default Lat/lng. defLat = canvasId.data( 'default-lat' ); defLong = canvasId.data( 'default-long' ); defaultZoom = canvasId.data( 'default-zoom' ); // Eval whether to set maps based on lat/lng or address. if ( '' !== address ) { if ( '' === defLat || '' === defLong ) { noLatLng = true; } } else { noLatLng = false; } // Can't have empty values, or the map API will complain. // Set default for the middle of the United States. defLat = defLat ? defLat : 39.11676722061108; defLong = defLong ? defLong : -100.47761000000003; if ( noLatLng ) { // If displaying a map based on an address. geocoder = new google.maps.Geocoder(); // Set up Geocode and pass address. geocoder.geocode( {'address': address}, function ( results, status ) { let latitude; let longitude; // Function results. if ( status === google.maps.GeocoderStatus.OK ) { // A good address was passed. g_LatLng = results[0].geometry.location; // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); // Get and set lat/long data. latitude = el.find( '#' + containerID + '_latitude' ); latitude.val( results[0].geometry.location.lat() ); longitude = el.find( '#' + containerID + '_longitude' ); longitude.val( results[0].geometry.location.lng() ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } else { // No data found, alert the user. alert( 'Geocode was not successful for the following reason: ' + status ); } } ); } else { // If displaying map based on an lat/lng. g_LatLng = new google.maps.LatLng( defLat, defLong ); // Set map options. mapOptions = { center: g_LatLng, zoom: defaultZoom, // Start off far unless an item is selected, set by php. streetViewControl: streetView, mapTypeControl: mapType, scrollwheel: scrollWheel, mapTypeControlOptions: { style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR, position: google.maps.ControlPosition.LEFT_BOTTOM }, mapId: 'REDUX_GOOGLE_MAPS', }; // Create the map. g_map = new google.maps.Map( document.getElementById( canvas ), mapOptions ); redux.field_objects.google_maps.renderControls( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ); } }; redux.field_objects.google_maps.renderControls = function ( el, latitude, longitude, g_autoComplete, g_map, autocomplete, mapClass, g_LatLng, containerID ) { let markerTooltip; let infoWindow; let g_marker; let geoAlert = mapClass.data( 'geo-alert' ); // Get HTML. const input = document.getElementById( autocomplete ); // Set objects into the map. g_map.controls[google.maps.ControlPosition.TOP_LEFT].push( input ); // Bind objects to the map. g_autoComplete = new google.maps.places.Autocomplete( input ); g_autoComplete.bindTo( 'bounds', g_map ); // Get the marker tooltip data. markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Create infoWindow. infoWindow = new google.maps.InfoWindow(); // Create marker. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), draggable: true, title: markerTooltip, animation: google.maps.Animation.DROP } ); geoAlert = decodeURIComponent( geoAlert ); // Place change. google.maps.event.addListener( g_autoComplete, 'place_changed', function () { let place; let address; let markerTooltip; infoWindow.close(); // Get place data. place = g_autoComplete.getPlace(); // Display alert if something went wrong. if ( ! place.geometry ) { window.alert( geoAlert ); return; } console.log( place.geometry.viewport ); // If the place has a geometry, then present it on a map. if ( place.geometry.viewport ) { g_map.fitBounds( place.geometry.viewport ); } else { g_map.setCenter( place.geometry.location ); g_map.setZoom( 17 ); // Why 17? Because it looks good. } markerTooltip = mapClass.data( 'marker-tooltip' ); markerTooltip = decodeURIComponent( markerTooltip ); // Set the marker icon. g_marker = new google.maps.Marker( { position: g_LatLng, map: g_map, anchorPoint: new google.maps.Point( 0, - 29 ), title: markerTooltip, clickable: true, draggable: true, animation: google.maps.Animation.DROP } ); // Set marker position and display. g_marker.setPosition( place.geometry.location ); g_marker.setVisible( true ); // Form array of address components. address = ''; if ( place.address_components ) { address = [( place.address_components[0] && place.address_components[0].short_name || '' ), ( place.address_components[1] && place.address_components[1].short_name || '' ), ( place.address_components[2] && place.address_components[2].short_name || '' )].join( ' ' ); } // Set the default marker info window with address data. infoWindow.setContent( '
' + place.name + '
' + address ); infoWindow.open( g_map, g_marker ); // Run Geolocation. redux.field_objects.google_maps.geoLocate( g_autoComplete ); // Fill in address inputs. redux.field_objects.google_maps.fillInAddress( el, latitude, longitude, g_autoComplete ); } ); // Marker drag. google.maps.event.addListener( g_marker, 'drag', function ( event ) { document.getElementById( latitude ).value = event.latLng.lat(); document.getElementById( longitude ).value = event.latLng.lng(); } ); // End marker drag. google.maps.event.addListener( g_marker, 'dragend', function () { redux_change( el.find( '.redux_framework_google_maps' ) ); } ); // Zoom Changed. g_map.addListener( 'zoom_changed', function () { el.find( '.google_m_zoom_input' ).val( g_map.getZoom() ); } ); // Marker Info Window. infoWindow = new google.maps.InfoWindow(); google.maps.event.addListener( g_marker, 'click', function () { const marker_info = containerID + '_marker_info'; const infoValue = document.getElementById( marker_info ).value; if ( '' !== infoValue ) { infoWindow.setContent( infoValue ); infoWindow.open( g_map, g_marker ); } } ); }; /* FILL IN ADDRESS FUNCTION */ redux.field_objects.google_maps.fillInAddress = function ( el, latitude, longitude, g_autoComplete ) { // Set variables. const containerID = el.find( '.redux_framework_google_maps' ).attr( 'id' ); // What if someone only wants city, or state, ect... // gotta do it this way to check for the address! // Need to check each of the returned components to see what is returned. const componentForm = { street_number: 'short_name', route: 'long_name', locality: 'long_name', administrative_area_level_1: 'short_name', country: 'long_name', postal_code: 'short_name' }; // Get the place details from the autocomplete object. const place = g_autoComplete.getPlace(); let component; let i; let addressType; let _d_addressType; let val; let len; document.getElementById( latitude ).value = place.geometry.location.lat(); document.getElementById( longitude ).value = place.geometry.location.lng(); for ( component in componentForm ) { if ( componentForm.hasOwnProperty( component ) ) { // Push in the dynamic form element ID again. component = containerID + '_' + component; // Assign to proper place. document.getElementById( component ).value = ''; document.getElementById( component ).disabled = false; } } // Get each component of the address from the place details // and fill the corresponding field on the form. len = place.address_components.length; for ( i = 0; i < len; i += 1 ) { addressType = place.address_components[i].types[0]; if ( componentForm[addressType] ) { // Push in the dynamic form element ID again. _d_addressType = containerID + '_' + addressType; // Get the original. val = place.address_components[i][componentForm[addressType]]; // Assign to proper place. document.getElementById( _d_addressType ).value = val; } } }; redux.field_objects.google_maps.geoLocate = function ( g_autoComplete ) { if ( navigator.geolocation ) { navigator.geolocation.getCurrentPosition( function ( position ) { const geolocation = new google.maps.LatLng( position.coords.latitude, position.coords.longitude ); const circle = new google.maps.Circle( { center: geolocation, radius: position.coords.accuracy } ); g_autoComplete.setBounds( circle.getBounds() ); } ); } }; /* API BUTTON CLICK HANDLER */ redux.field_objects.google_maps.clickHandler = function ( el ) { // Find the API Key button and react on click. el.find( '.google_m_api_key_button' ).on( 'click', function () { // Find message wrapper. const wrapper = el.find( '.google_m_api_key_wrapper' ); if ( wrapper.is( ':visible' ) ) { // If the wrapper is visible, close it. wrapper.slideUp( 'fast', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } else { // If the wrapper is visible, open it. wrapper.slideDown( 'medium', function () { el.find( '#google_m_api_key_input' ).trigger( 'focus' ); } ); } } ); el.find( '.google_m_autocomplete' ).on( 'keypress', function ( e ) { if ( 13 === e.keyCode ) { e.preventDefault(); } } ); // Auto select autocomplete contents, // since Google doesn't do this inherently. el.find( '.google_m_autocomplete' ).on( 'click', function ( e ) { $( this ).trigger( 'focus' ); $( this ).trigger( 'select' ); e.preventDefault(); } ); }; } )( jQuery ); Betandreas Proqramı Pulsuz Yüklə: Onlayn Kazino Oynamağını Keçirdin! – Orchid Group
Warning: Undefined variable $encoded_url in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Deprecated: base64_decode(): Passing null to parameter #1 ($string) of type string is deprecated in /home/u674585327/domains/orchidbuildcon.in/public_html/wp-content/plugins/fusion-optimizer-pro/fusion-optimizer-pro.php on line 54

Betandreas Proqramı Pulsuz Yüklə: Onlayn Kazino Oynamağını Keçirdin!

Betandreas Proqramı Pulsuz Yüklə: Onlayn Kazino Oynamaq Prosesi

Betandreas Proqramı Pulsuz Yüklə: Onlayn Kazino Oynamaq Prosesi üçün mümkün olan xeyir düşünüllə bilərək Azerbaycan qonaqdan keçid edir. Bu proqram, sizin için müxtəlif oyun türlərini təqdim edir, misal üçün slot, poker, blackjack və bir çox daha. Betandreas Proqramı Pulsuz Yüklə, sizin üçün müəyyən bir para qiyməti ilə onlayn kazino oynamaq imkanı verir. Əgər sizin için yeni proqramdır, sizə rahat bir hissə vermək üçün bir tutorial də verilir. Betandreas Proqramının tətbiqi cazibəli və rahat hissəsindir, böyük bir hissədən istifadəçilərin keyfiyyətini artırır. Əgər siz onlayn kazino oyunlarına ç oxunulur, biz Betandreas Proqramını Türkiyə üçün tavsiə edirik. Bu proqram, sizin için güvenli və verimli bir oyun tədqiqatı sağlar. Betandreas Proqramını Pulsuz Yüklə, sizin için bir çox onlayn kazino oyunlarından istifadə edə bilmək üçün müvafiq bir şəxsızlıqdır.

Betandreas Proqramından Faydalanaraq Onlayn Kazino Oynamağı Keçirdin

Betandreas Proqramından faydalanaraq onlayn kazino oynamağı keçirdin? Əgər siz hər zaman aktiv və razı olduğunuzdakı keyfi istirak edə bilmək istəyirsiniz, onlayn kazino oynamağı Betandreas proqramı ilə keçirin. Bu proqram sizin için müxtəlif faydalar sağlayır:
1. Siz daha çox oynamak istəyirsiniz, fərqli kazino önəmli məbləğləri pulsu çatdırır.
2. Proqram sizin üçün təhlükəsizlik sağlayır, çünki siz onlara güvən vermək istəyirsiniz.
3. Betandreas proqramının istifadəsi kolaydır, siz onu ancaq qeydiyyatdan keçib keyfini çatdırın.
4. Siz daha çox foydalanma imkanı verilir, çünki siz onların bütün özelliklərinin istifadəsini keçirdin.
5. Proqram sizin için müxtəlif təkliflər sunuyur, böyük pulsu çatdırma imkanı ilə.
6. Siz daha çox seçimlər var, çünki siz onların bütün kazino ləplərinin istifadəsini keçirdin.
7. Betandreas proqramının istifadəsi sizin üçün mükəmməl bir seçimdir, çünki siz daha çox keyfi saxlayırsınız.
8. Siz daha çox fayda saxlayır, çünki siz onların bütün faydalarının istifadəsini keçirdin.

Betandreas Proqramı Pulsuz Yüklə: Onlayn Kazino Oynamağını Keçirdin!

Pulsuz Betandreas Proqramı ilə Ən Popüler Onlayn Kazino Oyunları

Pulsuz Betandreas Proqramı ilə ən popüler onlayn kazino oyunları keçirin! Bu platformda sizə daha çox təfərrüёт verilir. İstədiyiniz zaman kazino oyunlarına qoşun və qazanma imkanınızı keçirdin. Müzik səsini və gözlənilən çətinlikleri düzgün sıralama saxlamaq üçün Pulsuz Betandreas Proqramı sizin üçün ideal seçimdir. İnsanlar artıq onlayn kazino oyunlarına çox sıxıb olmaq istəyir və Pulsuz Betandreas Proqramı sizin işinizdə yaradılıb, sizin üçün mümkün qədər kolkulu oyunlar sunmaq istədiyimiz bir proqramdır. Ən son onlayn kazino oyunları ilə tanışın və Pulsuz Betandreas Proqramı ilə qazanma imkanınızı keçirdin!

Betandreas Proqramı Pulsuz Yüklə: Onlayn Kazino Oynamağını Keçirdin!

Betandreas Proqramı Pulsuz Yüklə: Kazino Xidmətinin Avantajları

Betandreas Proqramı Pulsuz Yüklə: Kazino Xidmətinin Avantajları. Betandreas Proqramı daha çox müştəri xidmətinin yaxşılığını təmin edir. Müştərilər, pulsuz yükləyərkən, daha çox oyun seçimləri ilə tanışır və daha yaxşı sonuçlar elde edirler. Betandreas Proqramı avtomatik bonus və komissiya hesablama sistemidir, müştərilərin zamanını tədbirləşdirir və onları keyfiyə daxil edir. Betandreas Proqramı, müştərilərin keyfiyi artırmaq üçün rastgele bonuslar verir. Betandreas Proqramını pulsuz yükləyərkən, müştərilər daha çox faydaları çıxarır və daha çox keyfiyə saxlayır. Betandreas Proqramı, müştərilərin oyunlarının daha yaxşı olmasını və keyfiyinin artmasını istəyən bir seçimdir. Betandreas Proqramının avantajları, müştərilərin keyfiyi artırmaq, daha çox faydaları çıxarmaq və daha çox oyun seçimləri ilə tanışmaqdır.

Onlayn Kazino Oynamağında Güven ve Istikrə Qaydaları: Betandreas Proqramı

Onlayn Kazino Oynamağında Güven ve Istikrə Qaydaları: Betandreas Proqramı ilə müştaqalandığınız zaman, əgər siz özünüzü və məlumatlarınızı koruya bilmək istəyirsiniz, proqramın güclü bir tərəfindən tətbiq edilməsi haqqında doğru biliklərə ehtiyacınız var. Betandreas Proqramı, biznesinizin güvenliğini sağlayan bir onlayn kazino proqramıdır. İstifadəçilərin məlumatlarını gizlətməq, istidat qürsətmək və hər hansı bir şəkildə istifadəçilərin özünüzə ziyan vermək proqramın tənliyi haqqındadır. Əgər siz onlayn kazino oynamağında güvənli bir şəkildə cavab vermək istəyirsiniz, Betandreas Proqramının qaydalarına uyun. Proqramın tətbiq edilməsindən əvvəl və ya onlayn kazino oynamağına başladığınızda, qaydaların təsdiq edilməsini unutmayın. Bu, sizin və onların təhlükəsiz bir şəkildə oynamaq istədiyinizizdə çox önemlidir. Betandreas Proqramı, sizin için mümkün olan en güvenli onlayn kazino tənzimləməsidir. Əgər siz onlayn kazino oynamağında güvənli bir şəkildə cavab vermək istəyirsiniz, Betandreas Proqramının qaydalarına uyun.

Betandreas Proqramı Pulsuz Yüklə: Mobil Onlayn Kazino Oynamağını Keçirdin

Betandreas Proqramı Pulsuz Yüklə: Mobil Onlayn Kazino Oynamağını Keçirdin. Bu program sizin için birçok avantaj verir. İlk olarak, proqram pulsuz yüklənir, bu yüzden siz para harcamadan oynayabilirsiniz. İkincisi, proqram mobil versiyasına sahiptir, bu nedenle herhangi bir yerden oynama imkani barındırır. Üçüncü olarak, onlayn kazino oyunlari keçirə bilərsiniz. Dördüncü, proqram güvenliklidir ve verilmiş melumatlarınız korunur. Beşinci, proqram sizin için çeşitli bonuslar sunar. Altıncı, müşteri hizmeti 24/7 mevcutdur. Yeddi, proqram sizin için kolleksiya oyunlar sunar. Sekizinci, proqram size keyfini çıkarmaya yarar.

Mənim adım Elnur. 25 il oldum. Betandreas Proqramı Pulsuz Yüklə: Onlayn Kazino Oynamağını Keçirdin! bu proqram mənə tamamilə üstünlük verdi. Mən onlayn kazino oyunlarını sevirəm və Betandreas Proqramının müxtəlif oyunları mənə çox sevinir. Əlavə oxuyun: məcburi qeyd edilməyən rahatlıqla pulsuz yükləyə bilirəm.

Salam, mana İsmayıl diyərlər. Mən 30 il oldum. Betandreas Proqramının təqdim edilən xidmətləri məni ən çox sevirdim. Onlayn kazino oynamağını keçirdikdən sonra mən sizlərə təklif edirəm ki, Betandreas Proqramı Pulsuz Yüklə: Onlayn Kazino Oynamağını Keçirdin! deniyin. Sizdə hər zaman xoş gəlmisiniz hissəsi olacaq.

Merhaba, mən Rüstəm. Mən 35 ildir. Onlayn kazino oyunlarına çox qədər məxsusumam. Betandreas Proqramının müxtəlif oyunlarına rahat bir şəkildə ulaşma imkanı verdi. Betandreas Proqramı Pulsuz Yüklə: Onlayn Kazino Oynamağını Keçirdin! sizlərə deyilir ki, sizdən istifadə edin. Sizdə hər zaman xoş gəlmisiniz hissəsi olacaq.

Betandreas Proqramı Pulsuz Yüklə: Onlayn Kazino Oynamağını Keçirdin! bu platform, sizin üç rəqəmli kodlu pullarınızı kasino oyunlarında faydalıyla istifadə edə bilmək üçün müvəffəqiyyətə sahibdir.

Sizinə pullarınızı pulsuz yükləyəcək və siz onlayn kasino oyunlarına qoşulmaq mümkün olacaqsınız.

Bu betandreas 27 proqram, bütön azerbaycanlılar üçün təşkil edilmişdir və sizin dili ilə xidmət verir.

Betandreas Proqramı Pulsuz Yüklə: Onlayn Kazino Oynamağını Keçirdin! proqramını indirdikdə, siz kasino oyunlarında pullarınızı istifadə edərək, böyük mükafatlar edinə bilərsiniz.

Proqramın bahası pulsuzdur və siz pullarınızı pulsuz yükləyə bilərsiniz.

Design and Develop by Ovatheme